/*
 * Copyright (C) 2011 Wglxy.com
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.firestorm.eagletrons.dashboard;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import com.firestorm.eagletrons.official.R;
import com.google.android.apps.analytics.GoogleAnalyticsTracker;

/**
 * This is the base class for activities in the dashboard application. It
 * implements methods that are useful to all top level activities. That
 * includes: (1) stub methods for all the activity lifecycle methods; (2)
 * onClick methods for clicks on home, search, feature 1, feature 2, etc. (3) a
 * method for displaying a message to the screen via the Toast class.
 * 
 */

public abstract class DashboardActivity extends Activity {
	GoogleAnalyticsTracker tracker;
	Boolean logged_in = false;

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		// setContentView(R.layout.activity_default);

		tracker = GoogleAnalyticsTracker.getInstance();
		tracker.startNewSession("UA-25025598-9", this);
		tracker.trackPageView("/" + getClass().getSimpleName());
	}

	protected void onDestroy() {
		super.onDestroy();
		tracker.stopSession();
	}

	protected void onPause() {
		super.onPause();
		tracker.dispatch();
	}

	/**
	 * onRestart Called after your activity has been stopped, prior to it being
	 * started again. Always followed by onStart().
	 * 
	 */

	protected void onRestart() {
		super.onRestart();
	}

	/**
	 * onResume Called when the activity will start interacting with the user.
	 * At this point your activity is at the top of the activity stack, with
	 * user input going to it. Always followed by onPause().
	 * 
	 */

	protected void onResume() {
		super.onResume();
		SharedPreferences settings = getSharedPreferences("eagletrons", 0);
		logged_in = settings.getBoolean("logged_in", false);
	}

	/**
	 * onStart Called when the activity is becoming visible to the user.
	 * Followed by onResume() if the activity comes to the foreground, or
	 * onStop() if it becomes hidden.
	 * 
	 */

	protected void onStart() {
		super.onStart();
	}

	/**
	 * onStop Called when the activity is no longer visible to the user because
	 * another activity has been resumed and is covering this one. This may
	 * happen either because a new activity is being started, an existing one is
	 * being brought in front of this one, or this one is being destroyed.
	 * 
	 * Followed by either onRestart() if this activity is coming back to
	 * interact with the user, or onDestroy() if this activity is going away.
	 */

	protected void onStop() {
		super.onStop();
	}

	/**
 */
	// Click Methods

	/**
	 * Handle the click on the home button.
	 * 
	 * @param v
	 *            View
	 * @return void
	 */

	public void onClickHome(View v) {
		goHome(this);
	}

	/**
	 * Handle the click on the search button.
	 * 
	 * @param v
	 *            View
	 * @return void
	 */

	public void onClickSearch(View v) {
		startActivity(new Intent(getApplicationContext(), SearchActivity.class));
	}

	/**
	 * Handle the click on the About button.
	 * 
	 * @param v
	 *            View
	 * @return void
	 */

	public void onClickAbout(View v) {
		startActivity(new Intent(getApplicationContext(),
				com.firestorm.eagletrons.PreferencesActivity.class));
	}

	/**
	 * Handle the click of a Feature button.
	 * 
	 * @param v
	 *            View
	 * @return void
	 */

	public void onClickFeature(View v) {
		int id = v.getId();
		switch (id) {
		case R.id.home_btn_feature1:
			Intent i1 = new Intent(getApplicationContext(),
					com.firestorm.eagletrons.features.WebActivity.class);
			i1.putExtra("url", "http://eagletrons.net/mw/");
			i1.putExtra("title", "Wiki");
			startActivity(i1);
			break;
		case R.id.home_btn_feature2:
			// Logged in Code
			// if (logged_in) {
			Intent i2 = new Intent(getApplicationContext(),
					com.firestorm.eagletrons.features.WebActivity.class);
			i2.putExtra("url", "http://m.flickr.com/#/photos/eagletrons/sets/");
			i2.putExtra("title", "Flickr");
			startActivity(i2);
			// } else {
			// Toast toast = Toast.makeText(getApplicationContext(),
			// "You must be logged in to use this feature.",
			// Toast.LENGTH_SHORT);
			// toast.show();
			// }
			break;
		case R.id.home_btn_feature3:
			/**
			 * Temporarily disabled until fixed. if (logged_in) { Intent i4 =
			 * new Intent(getApplicationContext(),
			 * com.firestorm.eagletrons.features.WebActivity.class);
			 * i4.putExtra("url",
			 * "http://eagletrons.net/application/android/calendar_team.html");
			 * i4.putExtra("title", "Team Calendar"); startActivity(i4);
			 * 
			 * } else { Toast toast = Toast.makeText(getApplicationContext(),
			 * "You must be logged in to use this feature.",
			 * Toast.LENGTH_SHORT); toast.show(); }
			 */
			break;
		case R.id.home_btn_feature4:
			Intent i3 = new Intent(getApplicationContext(),
					com.firestorm.eagletrons.features.WebActivity.class);
			// i3.putExtra("url",
			// "http://eagletrons.net/application/android/calendar_public.html");
			i3.putExtra(
					"url",
					"https://www.google.com/calendar/b/0/htmlembed?mode=AGENDA&wkst=1&bgcolor=%23FFFFFF&showTabs=0&showNav=0&showTitle=0&src=eagletrons@gmail.com&color=%232952A3&ctz=America/New_York");
			i3.putExtra("title", "Team Calendar");
			startActivity(i3);
			break;
		case R.id.home_btn_feature5:
			Intent i5 = new Intent(getApplicationContext(),
					com.firestorm.eagletrons.features.WebActivity.class);
			i5.putExtra("url", "http://eagletrons.net");
			i5.putExtra("title", "Website");
			startActivity(i5);
			break;
		case R.id.home_btn_feature6:
			startActivity(new Intent(getApplicationContext(),
					com.firestorm.eagletrons.PreferencesActivity.class));
			break;
		default:
			break;
		}
	}

	/**
 */
	// More Methods

	/**
	 * Go back to the home activity.
	 * 
	 * @param context
	 *            Context
	 * @return void
	 */

	public void goHome(Context context) {
		final Intent intent = new Intent(context, HomeActivity.class);
		intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
		context.startActivity(intent);
	}

	/**
	 * Use the activity label to set the text in the activity's title text view.
	 * The argument gives the name of the view.
	 * 
	 * <p>
	 * This method is needed because we have a custom title bar rather than the
	 * default Android title bar. See the theme definitons in styles.xml.
	 * 
	 * @param textViewId
	 *            int
	 * @return void
	 */

	public void setTitleFromActivityLabel(int textViewId) {
		TextView tv = (TextView) findViewById(textViewId);
		if (tv != null)
			tv.setText(getTitle());
	} // end setTitleText

	/**
	 * Show a string on the screen via Toast.
	 * 
	 * @param msg
	 *            String
	 * @return void
	 */

	public void toast(String msg) {
		Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();
	} // end toast

	/**
	 * Send a message to the debug log and display it using Toast.
	 */
	public void trace(String msg) {
		Log.d("Demo", msg);
		toast(msg);
	}

} // end class
